package co.edu.udea.xyz.bl;

import java.util.List;

import co.edu.udea.xyz.dto.Cliente;
import co.edu.udea.xyz.dto.Solicitud;
import co.edu.udea.xyz.util.exception.BLInversionesException;
import co.edu.udea.xyz.util.exception.XYZException;


public interface ClienteService {
		
	/**
	 * Metodo guardarCliente
	 * Guarda un cliente en la base de datos.
	 * La persona a la que corresponde la cedula debe existir en la BD.
	 * @param cliente codigo de id o clave primaria de la tabla.
	 * @param cedula  clave foranea cedula de la Persona 
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public void guardarCliente(int cliente, int cedula)throws BLInversionesException, XYZException;
	
	/**
	 * Metodo para actualizar los datos de un cliente en la base de datos
	 * @param cliente
	 * @param cedula
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public void actualizarCliente(int cliente, int cedula)throws BLInversionesException, XYZException;
	
	/**
	 * Metodo que obtiene un cliente de la base de datos.
	 * @param cliente
	 * @return Cliente
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public Cliente obtenerCliente(int cliente)throws BLInversionesException, XYZException;
	
	/**
	 * Metodo que obtiene el listado de clientes de la base de datos.
	 * @return Lista de clientes
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public List<Cliente> obtenerListaClientes()throws BLInversionesException, XYZException;

	/**
	 * Lista de las solicitudes del cliente.
	 * @return
	 * @throws BLInversionesException
	 * @throws XYZException
	 */
	public List<Solicitud> getSolicitudesCliente(int codigoCliente) throws BLInversionesException, XYZException;

}